package com.hntxk.cqzd.diacrisis.service.impl;

import com.hntxk.core.framework.model.ResultModel;
import com.hntxk.core.framework.service.impl.BaseServiceImpl;
import com.hntxk.cqzd.diacrisis.entity.TblDiacrisisCard;
import com.hntxk.cqzd.diacrisis.model.DiacrisisAllModel;
import com.hntxk.cqzd.diacrisis.service.DiacrisisCardService;
import com.hntxk.sp.dict.manager.DictManager;
import com.hntxk.sp.dict.model.Dict;
import com.hntxk.sp.log.model.ActionLog;
import com.hntxk.sp.log.model.ActionType;
import com.hntxk.sp.util.LogRecordUtil;
import com.hntxk.sp.util.LoginUserUtil;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;


@Service("diacCardService")
@Transactional(rollbackFor = Exception.class)
public class DiacrisisCardServiceImpl extends BaseServiceImpl<TblDiacrisisCard> implements DiacrisisCardService {

    private static String MAPPER_NAMESPACE="com.hntxk.cqzd.diacrisis.mapper.DiacrisisCardMapper.";

    public DiacrisisCardServiceImpl() {
        super(MAPPER_NAMESPACE);
    }

    @Override
    public ResultModel<DiacrisisAllModel> insert(DiacrisisAllModel diacrisisAllModel) {

        List<TblDiacrisisCard> diacrisisCard = diacrisisAllModel.getDiacrisisCard();
        for(TblDiacrisisCard tblDiacrisisCard: diacrisisCard){
            getPrimaryKey(tblDiacrisisCard);
            //给卡类型赋值
            Long cardTypeId = tblDiacrisisCard.getCardTypeId();
            if(null==cardTypeId){
                throw new RuntimeException("卡类型不能为空");
            }
            Dict cq_base_card_type = DictManager.getInstance().getDict("CQ_BASE_CARD_TYPE", cardTypeId);
            tblDiacrisisCard.setCardTypeName(cq_base_card_type.getText());
            tblDiacrisisCard.setDiacrisisId(diacrisisAllModel.getTblDiacrisisInfo().getDiacrisisId());
            super.insert(MAPPER_NAMESPACE+"insert",tblDiacrisisCard);
            if (LoginUserUtil.isLogin()) {
                LogRecordUtil.addLog(new ActionLog(TblDiacrisisCard.class, tblDiacrisisCard.getCardId() + "", "12",
                        ActionType.ADD, "新增卡信息：" + tblDiacrisisCard.getCardTypeName()+ "[ " + tblDiacrisisCard.getCardNo() + " ]"));
            }
         }
        return ResultModel.empty();

    }

    @Override
    public ResultModel<DiacrisisAllModel> update(DiacrisisAllModel diacrisisAllModel) {

        //获取外键id
        Long diacrisisId = diacrisisAllModel.getTblDiacrisisInfo().getDiacrisisId();

        //根据外键查询库中是否有值
        List<TblDiacrisisCard> cards = getByFkId(diacrisisId);
        if(cards!=null&&cards.size()>0){
            //根据外键删除此表的数据
            delete(MAPPER_NAMESPACE+"deleteByFkId",diacrisisId);
        }
        return insert(diacrisisAllModel);
    }



    @Override
    public List<TblDiacrisisCard> getByFkId(Long id) {
        TblDiacrisisCard tblDiacrisisCard=new TblDiacrisisCard();
        tblDiacrisisCard.setDiacrisisId(id);
        List<TblDiacrisisCard> list = (List<TblDiacrisisCard>) query(MAPPER_NAMESPACE + "getByFkId", tblDiacrisisCard);
        return list;
    }


}
